from multiprocessing import Pool
import os, time

def sub_process(name):
    print(f'子进程的名称：{name}, 子进程的PID是：{os.getpid()}, 父进程的PID是：{os.getppid()}')
    time.sleep(1)

if __name__ == '__main__':
    time_start = time.time()
    print('父进程开始执行')
    # 创建进程池
    p = Pool(3)     # 可同时进行3个进程
    # 创建任务
    for i in range(10):
        # 以阻塞的方式调用函数
        # 1个进程1个进程运行
        # p.apply(func=sub_process, args=(i,))
        
        # 以非阻塞的方式调用函数
        # 3个进程一组，运行
        p.apply_async(func=sub_process, args=(i,))

    p.close()
    p.join()    # 阻塞父进程-等待所有子进程执行完后，才会执行父进程
    print('父进程执行结束')
    print(time.time() - time_start)